package com.qf.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qf.entity.OrderRefund;
import com.qf.entity.OrderRefundDTO;
import com.qf.service.OrderRefundService;
import com.qf.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 天--道--酬--勤
 *
 * @author LiangGaoQiang
 * @ClassName OrderRefundController
 * @Date: 2025/4/30 15:39
 * @Description: 描述
 */
@RestController
@RequestMapping("/orderRefund")
public class OrderRefundController {
    @Autowired
    private OrderRefundService orderRefundService;

    @GetMapping("/page")
    public R orderRefundPage(OrderRefundDTO orderRefundDTO) {
        // 第一步：开启分页插件
        PageHelper.startPage(orderRefundDTO.getPageNum(), orderRefundDTO.getPageSize());

        // 第二步：查询所有退款信息列表
        List<OrderRefund> orderRefundList = orderRefundService.queryAllOrderRefund(orderRefundDTO);

        // 第三步：封装分页信息
        PageInfo<OrderRefund> pageInfo = new PageInfo<>(orderRefundList);

        // 第四步：封装返回结果
        return R.ok(pageInfo);
    }


    /**
     * 添加订单
     * @param orderRefund 订单实体类
     * @return 添加结果
     */
    @PostMapping("/addRefund")
    public R addOrder(@RequestBody OrderRefund orderRefund) {
        boolean result = orderRefundService.addOrderRefund(orderRefund);
        // 判断是否添加成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * 根据id更新订单
     * @param orderRefund 订单实体类
     * @return 更新结果
     */
    @PostMapping("/updateRefund")
    public R updateOrder(@RequestBody OrderRefund orderRefund) {
        boolean result = orderRefundService.updateOrderRefund(orderRefund);
        // 判断是否更新成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * 根据id删除订单-逻辑删除
     * @param id 订单id
     * @return 删除结果
     */
    @GetMapping("/deleteByIdRefund")
    public R deleteOrderRefund(Long id) {
        // 设置逻辑删除标志位
        boolean result = orderRefundService.deleteOrderRefundById(id);
        // 判断是否删除成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * 根据id批量删除订单-逻辑删除
     * @param ids 订单id列表
     * @return 删除结果
     */
    @GetMapping("/deleteBatchRefund")
    public R deleteBatchOrderRefund(@RequestParam List<Long> ids) {
        // 设置逻辑删除标志位
        boolean result = orderRefundService.deleteBatchOrderRefundById(ids);
        // 判断是否删除成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }
}
